<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2021/12/21
 * Time: 10:51
 */
namespace app\common\lib;
class ClassArr{
    public static function smsClassStat(){
        return [
            "ali" => "app\common\lib\sms\AliSms",
            "bd" => "app\common\lib\sms\BdSms",
            "jd" => "app\common\lib\sms\JdiSms",
        ];
    }

    /**
     * @param $type 类型
     * @param $classs 类型封装数组
     * @param array $params 实例化对象传的参数
     * @param bool $needInstance 是否是静态方式
     * @return bool|object 返回类库或者返回对象 静态返回类库
     * @throws \ReflectionException
     */
    public static function initClass($type,$classs,$params=[],$needInstance = false)
    {
        //如果我们的工厂模式调用的方法是静态的 那么我们这个地方返回类库 AliSms
        //如果不是静态的 我们返回对象
        if(!array_key_exists($type,$classs)){
            return false;
        }
        $classsName = $classs[$type];
        // new ReflectionClass("A") => 建立A反射类
        return $needInstance == true ? (new\ReflectionClass($classsName))->newInstanceArgs($params) : $classsName;
    }
}